草庐IT

c++ - Qt Release build 给出 MSVC++ Runtime Library Error

全部标签

c++ - GCC 默认导出所有符号与 MSVC 默认不导出任何内容之间的设计原理是什么?

C++编译器GCC和MSVC之间的许多关键区别之一是,首先默认导出共享库中的所有符号,而MSVC不导出任何内容。一些含义是,在MSVC中,您必须导出显式实例化的模板类。虽然我已经接受了这一事实,但我想知道从编译器设计人员的角度来看,每种方法的设计含义、权衡是什么? 最佳答案 这可能与各自操作系统中的可执行文件和库有关。在Windows上,库(DLL)和可执行文件是一回事。从字面上看,您可以将.dll重命名为.exe,它将运行保护模式stub并输出一些错误(再次强调,保护模式,因此它只能在16位系统上运行)。鉴于它们是相同的,并且您可

c++ - gcc 与 clang、msvc 和 icc : Is this function call ambiguous?

我能得到的所有编译器都同意这很好:templateautofoo(Check,T...)->void;templateautofoo(int,T...)->void;intmain(){foo(7,"");}但是,根据gcc,以下代码(带有不能从函数参数推导的前导模板参数)是不明确的:templateautobar(Check,T...)->void;templateautobar(int,T...)->void;intmain(){bar(7,"");//ambiguousaccordingtogccbar(7);//justfine}另一方面,clang、msvc和icc对此非常满

c++ - 缩小从 `int`(常量表达式)到 `unsigned int` 的转换 - MSVC vs gcc vs clang

constexprinti=100;structF{F(unsignedint){}};intmain(){F{i};}上面的代码片段:使用-Wall-Wextra-Wpedantic在g++7上编译没有警告。使用-Wall-Wextra-Wpedantic在clang++4上编译没有警告。无法在MSVC2017上编译:conversionfrom'constint'to'unsignedint'requiresanarrowingconversion问:这里MSVC是不是错了?liveexampleongodbolt.orginti=100;structF{F(unsignedint

c++ - 在 gdb 中使用 [] 运算符和 unordered_map 给出未解析的运算符

我有一个C++代码,我在其中实例化一个unordered_map,然后使用cout打印它的值。这很好用。但是,当我尝试在gdb中运行它并打印unordered_map的值时,这给了我错误。下面是代码片段:std::unordered_mapmymap={{"Mars",3000},{"Saturn",60000},{"Jupiter",70000}};std::cout上面的两个cout语句都打印了键“Mars”的unordered_map值。但是,当我使用gdb然后尝试使用以下语句在键“Mars”处打印mymap的值时,出现错误。(gdb)printmymap.at("Mars")C

c++ - 函数参数的 MSVC 和 constexpr?

这段代码用clang和gcc编译得很好。templatestructN{staticconstexprsize_tv=n;};templateconstexprbooloperator,size_tn2){returnnconstexprvoidfoo(Nv){static_assert(v{});return0;}但是,如果我使用MSVC,我得到的错误是v不是常量表达式。我能理解为什么MSVC这么认为,但我认为这是错误的,而clang/gcc是正确的。是MSVC的错误吗? 最佳答案 是的,MSVC在这里是错误的。代码格式良好似乎违

ActiverEcord Collection Count Count COMINED FIELD订购时给出mysql2 ::错误:“顺序子句”中的未知列

试图拨打ActivereCord::关系集合的算法正常,除非您将其加入如下:users=User.joins(:foos).select(['users.idasid','users.nameasname','sum(b.blah)asblah','max(foos.baz)asbazness']).joins('leftjointabley_thingsbonusers.id=b.user_id').group('users.id')users.count#noproblemusers.order('nameDESC').count#noproblemusers.order('bazness

c++ - std::invoke 没有匹配的重载函数发现 VS 2015 中给出的错误

我是C++和SDL的新手,我正在尝试创建一个不断更新屏幕的线程,但我不断收到以下错误:'std::invokenomatchingoverloadedfunctionfound'和'Failedtospecializefunctiontemplate'unknown-typestd::invoke(Callable&&,_Types&&...)''main.cppintmain(intargc,char**argv){usingnamespacestd::placeholders;boolgameover=false;inttest;std::stringfilepath=getRes

c++ - 有没有办法获得给定数量的输入,其中数字在 C++ 的编译时由模板给出?

例如,假设我创建了如下类:templateclassA{public:intoperator()(intinput,...){//getINPUT_SIZE-manyinputs//returnsum;}};我希望获得与INPUT_SIZE一样多的输入,而不是更多或更少。我怎样才能做到这一点?另外,我用的是c++11,如果c++14以上有更好的办法,我也想知道。 最佳答案 Livedemo1templateusingalways_t=T;templatestructA_impl;templatestructA_impl>{intop

c++ - 在 C++ (MSVC) 中打印堆栈跟踪?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion在我的C++应用程序(使用VisualStudio2003开发)和Qt4,我想将特定代码行的堆栈跟踪打印到控制台输出或文件中。需要什么?Qt对此有帮助吗?

C++ 指针的打印值给出了奇怪的结果

当我编译并运行此C++代码时,我没有得到预期的输出。#includeusingnamespacestd;intmain(){int*i=newint;long*l=newlong;char*c=newchar[100];float*f=newfloat[100];cout在unix机器上我得到i0x967f008l0x967f018cf0x967f090在Windows机器上,c的值打印为一行随机字符。请有人解释为什么它没有正确打印char数组的指针。谢谢 最佳答案 operator对于std::ostream和std::wostr